import axios from 'axios'
import { ElMessage } from 'element-plus'

import { useBaseStore } from '../stores/useBaseStore.js'
let baseStore = null

// 添加默认请求前缀
axios.defaults.baseURL = 'http://127.0.0.1:3000'

// 添加请求拦截器
axios.interceptors.request.use(
  function (config) {
    if (baseStore == null) {
      baseStore = useBaseStore()
    }
    // 请求发送前的参数处理方法
    // console.log(config);
    // 为所有的请求都增加Authorization头
    config.headers.Authorization = 'Bearer ' + baseStore.token
    // 返回新参数
    return config
  },
  function (error) {
    // 请求出现问题，未发送
    return Promise.reject(error) // 固定的
  },
)

// 添加响应拦截器
axios.interceptors.response.use(
  function (res) {
    // 对响应数据做点什么
    if (res.data.status >= 400) {
      ElMessage.error({
        message: res.data.msg,
      })
      return Promise.reject(res.data)
    }
    // return res.data; // 必须存在一个返回值
    // res 返回的完整的响应对象
    // res.data 取的是服务器的完整响应数据
    // res.data.data 只取服务器请求成功后的页面数据
    return res.data.data
  },
  function (error) {
    // 对响应错误做点什么
    ElMessage.error({
      message: '请求失败，请稍后重试',
    })
    return Promise.reject(error) // 固定的
  },
)

export default axios
